package com.stx;

import com.stx.pojo.Calculator;
import org.junit.*;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Suite;

import static org.junit.Assert.*;
/**
 * 计算器类测试
 * @author Suntingxing
 * @date 2021/11/5 8:54
 */
public class test {

    Calculator calculator = new Calculator();

    /**
     * @Before 注解 方法在测试进行之前率先执行 此处设置默认值为1
     */
    @Before
    public void init(){
        calculator.setResult(0);
    }

    /**
     * @After 注解 在所有测试结束之后运行 相当于将结果清空
     */
    @After
    public void Destroy(){
        calculator.setResult(0);
    }

    @Test
    public void addTest(){
        calculator.add(2);
        calculator.add(3);
        assertEquals(5,calculator.getResult());
    }

    @Test
    public void substractTest(){
        calculator.substract(1);
        /**
         * 错误断言 result默认值为1 调用减法结果应为0 这里断言结果为9
         */
        assertEquals(9,calculator.getResult());
    }

    @Ignore("忽略这个测试")
    @Test
    public void multiply(){
        calculator.multiply(3);
        calculator.multiply(2);
        assertEquals(6,calculator.getResult());
    }

    @Test
    public void failTest(){
        fail("直接让这个测试报错"); // 直接让这个方法错误
    }

    /**
     * 设置时限 如果超过了就是超时 squareRoot方法为死循环必然报错
     */
    @Test(timeout = 2000)
    public void squareRoot(){
        calculator.squareRoot(1);
    }

    @Test(timeout = 1000)
    public void MySqrtTest(){
        calculator.sqrt(128);
        assertEquals(4,calculator.getResult());
    }
}
